EdgeDB建基於Postgres
之上,可以視為新世代的SQL。其Co-Founder兼CEO是傳說中的Yury Selivanov,他不僅是Python asyncio背後的主要推手,也是asyncio威力加強版uvloop的主要開發者。
EdgeDB有著自己的EdgeQL
語法與型別系統。其EdgeQL query
會於底層編譯為相對應的Postgres query
,由於其不是一個ORM
,所以理論上所有想對Postgres
做的操作,應該都能使用更簡潔的EdgeQL
語法達成。這使得我們可以更專注在與資料互動,而不必花費過多心力在編寫或修改query。
EdgeDB的官方文件十分完整,但我最推薦的入門學習資源是由David MacLeod(註1)所寫的Easy EdgeDB。這本書以德古拉吸血鬼為背景,一步步帶領讀者走進故事內,並以EdgeDB來描述各種事物。這樣的「沉浸式」教學,讓我快速且紮實地學習了EdgeDB。
由於中文的EdgeDB學習資料比較少,雖然有高手翻譯成簡體版,但似乎已經沒有繼續更新維護。有鑑於此,我便想依照David的方法,選擇「無間道」(註2)這個我很有興趣的主題,來編寫正體中文的教材,於是便有了看無間道學EdgeDB這個project(於本系列文中,將以無間EdgeDB
作為代稱)。
首先我們會一起建立一個初始schema,裡面包含了基本的人時地事。接著再從劇中選出十幕,於每幕中交待劇情,熟悉並學習各種query寫法並同時改善schema後,進行migration
。這麼設計的原因是,實務上我們很少會有不需要變動的schema,通常都需要配合專案發展做出變動。
這個系列文,我希望以無間EdgeDB
為基礎並進一步添加更多說明,各日大綱預定如下:
insert
、select
、update
及delete
等操作。multi property
及array
。tuple
、range
及multirange
。希望大家跟我一樣,享受從故事中學習新事物。
最後,因為非常重要,要講三次:
Search + Ask AI !!!
Search + Ask AI !!!
Search + Ask AI !!!
在熟練使用EdgeDB前,必定會經過許多卡關的地方。此時,請想起EdgeDB團隊於官網正上方,有提供強大的search功能與類似ChatGPT的Ask AI
,來協助大家。
EdgeDB有提供Vscode extension,可以幫助大家在編輯*.esdl
及*.edgeql
檔案時,有比較好的視覺感受及提示。比較可惜的是目前還沒有提供formatter
,所以大家寫出來的schema和query暫時沒有一致的格式。
註1:David略通中文,他於閱讀無間EdgeDB
後曾於LinkedIn 推薦,並提議收錄於官方的GitHub awesome-edgedb repo中。
註2:既名無間道,表示時間與空間都是模糊的。三部曲間,有相容亦有衝突,或許每一個分支都是一個平行時空。如若真的想深入了解,可以參考知乎網友所寫的四十篇無間道系列劇情梳理。
註3:一如所有當紅的Python package一樣,EdgeDB似乎也正走上rustify之路。